package main

import (
	"fmt"
	"time"
)

func test() {
	for i := 0; i < 10; i++ {
		fmt.Println("hellogolang")
		time.Sleep(time.Second / 2)
	}
}

// 协程
func main() {
	go test() //开启协程

	for i := 0; i < 10; i++ {
		fmt.Println("helloworld")
		time.Sleep(time.Second / 2)
	}
}

// //复制文件
// import (
// 	"fmt"
// 	"io/ioutil"
// )

// func main() {
// 	var path1 string = "/home/alpaca/go-learning/goproject/src/gocode/text.4.18/main/text.txt"
// 	var path2 string = "/home/alpaca/go-learning/goproject/src/gocode/text.4.18/main/text1.txt"
// 	content, err := ioutil.ReadFile(path1)

// 	if err != nil {
// 		fmt.Println("读取失败")
// 		return
// 	}
// 	err = ioutil.WriteFile(path2, content, 0666)
// 	if err != nil {
// 		fmt.Println("写入失败")
// 		return
// 	}
// }

// import (
// 	"bufio"
// 	"fmt"
// 	"os"
// )

// // 文件写入
// func main() {
// 	//打开文件
// 	var path string = "/home/alpaca/go-learning/goproject/src/gocode/text.4.18/main/text.txt"
// 	file, err := os.OpenFile(path, os.O_RDWR|os.O_APPEND, 0666)

// 	if err != nil {
// 		fmt.Println("打开文件失败", err)
//		return
// 	}

// 	defer file.Close()

// 	//创建一个输出的流
// 	writer := bufio.NewWriter(file)
// 	for i := 0; i < 10; i++ {
// 		writer.WriteString("hello world\n")
// 	}
// 	//刷新数据
// 	writer.Flush()
// }

// import (
// 	"bufio"
// 	"fmt"
// 	"io"
// 	"os"
// )

// // 带缓冲区进行文件读取
// func main() {
// 	//打开文件
// 	file, err := os.Open("/home/alpaca/.bashrc")
// 	if err != nil {
// 		fmt.Println("读取错误", err)
// 	}
// 	//函数退出时,关闭文件
// 	defer file.Close()

// 	//创建一个流
// 	reader := bufio.NewReader(file)
// 	//读取操作
// 	for {
// 		str, err := reader.ReadString('\n')
// 		if err == io.EOF { //读取到文件结尾
// 			break
// 		}
// 		fmt.Printf("%v", str)
// 	}
// }

// import (
// 	"fmt"
// 	"io/ioutil"
// )

// 文件io
// func main() {
// 	//open/close被封装到readfile函数内部了
// 	content, err := ioutil.ReadFile("/home/alpaca/.bashrc")
// 	if err != nil {
// 		fmt.Println("读取错误", err)
// 	}

// 	fmt.Printf("%v\n", content)
// }

// import (
// 	"fmt"
// 	"os"
// )

// 文件操作,open/close
// func main() {
// 	file, err := os.Open("/home/alpaca/.bashrc")

// 	if err != nil {
// 		fmt.Println("文件打开失败,", err)
// 	}

// 	fmt.Printf("%v\n", file)

// 	err = file.Close()
// 	if err != nil {
// 		fmt.Println("关闭失败")
// 	}
// }

//使用变量.(type)即便当前为接口类型也能分辨出原来的类型
// type mytype interface {
// 	showtype()
// }

// type student struct {
// }

// type teacher struct {
// }

// func (s student) showtype() {
// 	fmt.Println("student!!!!")
// }

// func (t teacher) showtype() {
// 	fmt.Println("teacher!!!")
// }

// func teach(m mytype) {
// 	var t teacher = m.(teacher) //断言
// 	t.showtype()
// }

// func main() {
// 	var s student
// 	var t teacher

// 	teach(t)
// 	teach(s)

// 	// var m1 mytype = s
// 	// var m2 mytype = t
// 	// m2.showtype()
// 	// m1.showtype()
// }

// type A struct {
// 	a int
// }

// type B struct {
// 	b int
// 	A
// }

// func main() {
// 	b := B{12, A{11}}
// 	b1 := B{
// 		b: 13,
// 		A: A{17},
// 	}
// 	fmt.Println(b)
// 	fmt.Println(b1)
// }
